package net.wofly.right.domain;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;

/**
 * 组织机构
 *
 * @author lign
 * @version 1.0
 * @created 22-9月-2017 19:35:48
 */
@Data
@Entity
@Table(name = "sale_right_organization")
@ApiModel(description = "组织机构")
public class Organization {
    
    @Id
    private String organizationID;
    
    /**
     * 组织机构编码  长度：50
     */
    @ApiModelProperty(value = "组织机构编码", required = true)
    private String organizationCode ;
    
    private Long modifyDate;
    /**
     * 组织机构名称  长度：50
     */
    @ApiModelProperty(value = "组织机构名称", required = true)
    private String organizationName;
    
    private String organizationNamePinYin;
    
    /**
     * 状态   长度：1
     */
    @ApiModelProperty(value = "状态", required = false)
    private Integer status = 1;
    /**
     * 是否有仓库标识  1：有仓库  0：没有仓库
     * <ul>
     * <li>如果有仓库，在创建组织机构时，会自动在仓库表中生成一条仓库记录</li>
     * <li>公司及店面有仓库，其它组织无仓库</li>
     * </ul>
     */
    @ApiModelProperty(value = "是否有仓库标识  1：有仓库  0：没有仓库", required = true)
    private Integer warehouseFlag = 0;
    
    @ApiModelProperty(value = "仓库ID 当有仓库时有值", required = false)
    private String warehouseID;
    
    /**
	 * 组织机构 Logo 图片
	 * 长度；200
	 */
    @ApiModelProperty(value = "组织机构LOGO图片", required = false)
	private String logoPic;
	
	/**
	 * 组织机构所在位置
	 */
    @ApiModelProperty(value = "组织机构地址", required = false)
	private String addr;
	/**
	 * 组织机构类型
	 * <ol>
	 * 	<li>构想是在不同项目实施时，根据实际情况来设置类型。可以据此来扩展更多的功能</li>
	 * 	<li></li>
	 * </ol>
	 */
    @ApiModelProperty(value = "组织机构类型", required = true)
	private String organizationType;
    
    /**
	 * 组织机构类型说明
	 * <ol>
	 * 	<li>构想是在不同项目实施时，根据实际情况来设置类型。可以据此来扩展更多的功能</li>
	 * 	<li></li>
	 * </ol>
	 */
    @Transient
    @ApiModelProperty(value = "组织机构类型说明", required = true)
	private String organizationTypeStr;
	/**
	 * 关联路径
	 * <ol>
	 * 	<li>这是一个扩展点。可以根据组织机构类型等来扩展。比如：组织机构为门店时，可以链接到门店基本信息的内容等。</li>
	 * </ol>
	 */
    @ApiModelProperty(value = "关联路径", required = false)
	private String relatePath;
    
    
    /**
	 * 联系人
	 * <ol>
	 * 	<li>组织机构联系人，对于客户来说，默认会把联系人做为客户下的一个用户来处理</li>
	 * </ol>
	 */
    @ApiModelProperty(value = "联系人", required = false)
    private String linkman;
    
    private String linkmanPinYin;
    /**
	 * 联系人手机号
	 * <ol>
	 * 	<li>联系人手机号</li>
	 * </ol>
	 */
    @ApiModelProperty(value = "联系人手机号", required = false)
    private String mobile;
    
    /**
   	 * 操作人员用户ID
   	 * <ol>
   	 * 	<li>操作人员用户ID</li>
   	 * </ol>
   	 */
    @ApiModelProperty(value = "当前操作人员用户ID", required = true)
    private String optUserID;

	/**
	 * 下级组织机构
	 */
	@Transient
	@ApiModelProperty(value = "下级组织机构", required = false)
	List<Organization> subOrgList;
	
	@Transient
	@ApiModelProperty(value = "客户基本信息", required = false)
	CustomInfo customInfo ;
	
	@Transient
	@ApiModelProperty(value = "客户维护人", required = false)
	User followUser ;
    
    public Organization() {
        
    }
    
    @Override
    public void finalize() throws Throwable {
        
    }
}